package com.pc.service;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.junit.Test;
import org.springframework.stereotype.Service;

import com.pc.mapper.JsoupPageMapper;
import com.pc.pojo.SysResult;
import com.pc.pojo.webPojo;
import com.pc.util.log.LogWrite;


@Service
public class JsoupPageService {
	
	@Resource
	private JsoupPageMapper JsoupPageMapper;

	
	/**
	 * 获取二级页面url
	 * @param url  一级页面url
	 * @param select 所需信息所在的位置div等信息
	 * @return  将所需信息返回
	 * @author 创建者：ltw
	 * @version 创建时间：2018年5月23日下午3:09:15
	 */
	public List<webPojo> querySecondLevelUrl(String url, String select) {
		//LogWrite.trace(JsoupPageService.class, "querySecondLevelUrl url=" +url );
		List<webPojo> jsopPageList = new ArrayList<webPojo>();
		try {
			Elements elements = Jsoup.connect(url).get().
					select(select);
			for(Element element :elements ) {
				webPojo jsopPage = new webPojo();
				String pageurl = "http://sou.zhaopin.com"+element.attr("href");
				jsopPage.setUrl(pageurl);
				jsopPage.setUrlName(element.text());
				jsopPageList.add(jsopPage);
			}
			
			return jsopPageList;
		} catch (IOException e) {
			LogWrite.error(JsoupPageService.class, "querySecondLevelUrl 错误信息为：" + e.getMessage());
			return jsopPageList;
		}
	}
	
	
	/**
	 * 筛选所有IT行业的url 并 向url中添加城市信息
	 * @param secondLevelUrlList
	 * @return
	 * @author 创建者：ltw
	 * @version 创建时间：2018年5月23日下午3:08:49
	 */
	public SysResult addCityMessage(List<webPojo> secondLevelUrlList) {
		//LogWrite.trace(JsoupPageService.class, "addCityMessage list=" + secondLevelUrlList );
		SysResult result = new SysResult();
		String targeturl = null;
		String lim = "北京市天津市上海市重庆市石家庄市太原市呼和浩特市沈阳市长春市哈尔滨市南京市杭州市合肥市福州市南昌市济南市郑州市武汉市长沙市成都市贵阳市昆明市拉萨市西安市兰州市西宁市银川市乌鲁木齐市广州市南宁市海口市唐山市大同市包头市大连市吉林市齐齐哈尔市无锡市宁波市芜湖市厦门市赣州市青岛市开封市黄石市株洲市绵阳市六盘水市昭通市昌都市铜川市嘉峪关市海东市石嘴山市克拉玛依市深圳市柳州市三亚市秦皇岛市阳泉市乌海市鞍山市四平市牡丹江市徐州市温州市蚌埠市泉州市宜春市淄博市洛阳市十堰市湘潭市自贡市遵义市曲靖市山南市宝鸡市金昌市吴忠市吐鲁番市珠海市桂林市儋州市邯郸市长治市赤峰市抚顺市辽源市佳木斯市常州市绍兴市淮南市莆田市吉安市枣庄市平顶山市荆州市衡阳市攀枝花市铜仁市玉溪市日喀则市咸阳市白银市固原市哈密市汕头市梧州市邢台市晋城市呼伦贝尔市本溪市通化市大庆市苏州市湖州市马鞍山市漳州市上饶市东营市安阳市宜昌市邵阳市泸州市毕节市普洱市林芝市渭南市天水市中卫市佛山市北海市保定市朔州市通辽市丹东市白山市伊春市南通市嘉兴市淮北市龙岩市抚州市烟台市鹤壁市襄阳市岳阳市德阳市安顺市保山市汉中市酒泉市韶关市崇左市张家口市忻州市乌兰察布市锦州市白城市鸡西市连云港市金华市铜陵市三明市九江市潍坊市新乡市鄂州市张家界市广元市丽江市安康市张掖市湛江市来宾市承德市吕梁市鄂尔多斯市营口市松原市鹤岗市淮安市衢州市安庆市南平市景德镇市济宁市焦作市荆门市益阳市遂宁市临沧市商洛市武威市肇庆市贺州市沧州市晋中市巴彦淖尔市阜新市双鸭山市盐城市台州市黄山市宁德市萍乡市泰安市濮阳市黄冈市常德市内江市延安市定西市江门市玉林市廊坊市临汾市辽阳市七台河市扬州市丽水市阜阳市新余市威海市许昌市孝感市娄底市乐山市榆林市陇南市茂名市百色市衡水市运城市盘锦市绥化市镇江市舟山市宿州市鹰潭市日照市漯河市咸宁市郴州市资阳市平凉市惠州市河池市铁岭市黑河市泰州市滁州市滨州市三门峡市随州市永州市宜宾市庆阳市梅州市钦州市朝阳市宿迁市六安市德州市商丘市怀化市南充市汕尾市防城港市葫芦岛市宣城市聊城市周口市达州市河源市贵港市池州市临沂市驻马店市雅安市阳江市亳州市菏泽市南阳市广安市清远市莱芜市信阳市巴中市东莞市眉山市中山市潮州市揭阳市云浮市";
		String[] cities = lim.split("市");
		
			for(webPojo urlMessage : secondLevelUrlList) {
				String url = urlMessage.getUrl();
				//已执行  （IT 互联网 通信 ）
				//if(url.contains("&bj=160000") || url.contains("&bj=160300") || url.contains("&bj=160200") || url.contains("&bj=160400")|| url.contains("&bj=200500")  || url.contains("&bj=200300")  || url.contains("&bj=5001000") ) {
				//财务|人力|行政  
				//if(url.contains("&bj=2060000") || url.contains("&bj=5002000") || url.contains("&bj=3010000") ){
				//项目|质量|高级管理
				if(url.contains("&bj=201300") || url.contains("&bj=2023405") || url.contains("&bj=1050000") ){
				//房产|建筑|物业管理
				//if(url.contains("&bj=141000") || url.contains("&bj=140000") || url.contains("&bj=142000")){
				//采购|贸易|交通|物流
				//if(url.contains("&bj=4083000") || url.contains("&bj=140000")){

				//已执行 （金融）
				//if(url.contains("&bj=2071000") || url.contains("&bj=2070000") || url.contains("&bj=7006000") || url.contains("&bj=200900") ) {
					
					//LogWrite.trace(JsoupPageService.class, "addCityMessage url=" + url );
					try {
						for(String city : cities) {
							
							targeturl = url.substring(0,url.lastIndexOf("?jl=")+4)+city + url.substring(url.lastIndexOf("&bj"));
							JsoupPageMapper.saveSecondLevelUrl(targeturl);
						}
					result.setStatus(0);
					} catch (Exception e) {
						result.setStatus(1);
						result.setMessage("保存城市信息错误");
						LogWrite.error(JsoupPageService.class, "addCityMessage循环添加城市 错误信息为：" + e.getMessage());
					}
					
				}
					
			}
		return result;
	}
	
	
	
	/**
	 * 查询并在url中添加页码
	 * @param url  目标页面的url
	 * @return  目标页面的url
	 * @author 创建者：ltw
	 * @version 创建时间：2018年5月23日下午3:09:42
	 */
	public List<webPojo> queryPageNumber(String url) {
		//LogWrite.trace(JsoupPageService.class,url);
		List<webPojo> pageUrlList = new ArrayList<webPojo>();
		webPojo pagepojo = new webPojo();
		try {
			Elements ele = Jsoup.connect(url).get().select(".seach_yx .search_yx_tj em");
			int size = Integer.parseInt(ele.text());
			String pageUrl = null;
			if(size >5400) {
				for(int i = 1 ; i<  91 ;i++) {
					pageUrl = url+"&p=" + i;
					pagepojo.setUrl(pageUrl);		
				}
				
			}else if (size >1) {
				for(int i = 1 ; i<= size/60+1 ;i++) {
					pageUrl = url+"&p=" + i;
					pagepojo.setUrl(pageUrl);
				}
			}
			pageUrlList.add(pagepojo);
		} catch (IOException e) {
			LogWrite.error(JsoupPageService.class, "queryPageNumber url=" +url +"   errorMsg=" + e.getMessage());
		}
		return pageUrlList;
	}
	

	/**
	 * 查询具体职位页面url
	 * @param UrlList 传入的包含所有二级url的list集合
	 * @return 将url地址完成状态返回
	 * @author 创建者：ltw
	 * @version 创建时间：2018年5月23日下午3:10:32
	 */
	public SysResult queryPositionUrl(List<webPojo> UrlList) {
		LogWrite.trace(JsoupPageService.class,"当前运行queryPositionUrl" + UrlList);
		
		SysResult result = new SysResult();
		String url = null;
		for(webPojo pageUrl : UrlList) {
			url = pageUrl.getUrl();
			//LogWrite.trace(JsoupPageService.class,"queryPositionUrl  当前url="+url);
			try {
				Elements elements = Jsoup.connect(url).get().select(".zwmc div a");
				for(Element element:elements) {
					String positionUrl = element.absUrl("href");
					JsoupPageMapper.savePositionUrl(positionUrl);
				}	
				result.setStatus(0);
			}catch (IOException e) {
				result.setStatus(1);
				result.setMessage("保存职位url信息失败 url=" + url);
				LogWrite.error(JsoupPageService.class,"queryPositionUrl url=" +url +"   errorMsg=" + e.getMessage());
		}
		}
		return result;
	}

	

}
